﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ProgNetComponents.Data.SqlCe;
using ProgNetComponentsDx.Browsers;
using DevExpress.XtraEditors;
using ProgNetComponentsDx.Options;

namespace Wydatki.Zakupy
{
    public partial class FormDodajZakupy : XtraForm
    {
        public FormDodajZakupy()
        {
            InitializeComponent();
        }
        Wydatki.Zakupy.DataSets.ZakupyDataSet zakupy;
        Wydatki.Setup.DataSets.SklepyDataSet sklepy;
        Wydatki.Setup.DataSets.ProduktyDataSet produkty;

        Wydatki.Zakupy.DataSets.ZakupyDataSet zakupyClone;
        public event EventHandler Added;
        private void OnAdded()
        {
            if (Added != null)
                Added(this, EventArgs.Empty);
        }
        public FormDodajZakupy(Wydatki.Zakupy.DataSets.ZakupyDataSet zakupy, Wydatki.Setup.DataSets.SklepyDataSet sklepy, Wydatki.Setup.DataSets.ProduktyDataSet produkty)
        {
            InitializeComponent();
            this.zakupy = zakupy;
            this.produkty = produkty;
            this.sklepy = sklepy;
            zakupyClone = zakupy.Copy() as Wydatki.Zakupy.DataSets.ZakupyDataSet;
            zakupyClone.Clear();
            zakupyClone.AcceptChanges();
            gcMain.DataSource = zakupyClone;
            DataRow nr =zakupyClone.WRK_WYDATKI.NewRow();
            zakupyClone.WRK_WYDATKI.Rows.Add(nr);
        }

        private void btnOk_Click(object sender, EventArgs e)
        {
            if (Save())
                Close();
        }

        private bool Save()
        {
            string str = "";
            gvMain.CloseEditor();
            gvMain.UpdateCurrentRow();

            if (modeProvider1.ValidateRequiredEdits(ref str) && modeProvider1.ValidateRequiredColumns(ref str))
            {
                zakupyClone.WRK_WYDATKI[0].WRK_WYD_DATA = dateEdit1.DateTime;
                if (lookUpEdit1.EditValue.IsNotNull())
                    zakupyClone.WRK_WYDATKI[0].WRK_WYD_SKLEP = lookUpEdit1.EditValue.AsInt();
                else
                    zakupyClone.WRK_WYDATKI[0].SetWRK_WYD_SKLEPNull();

                zakupy.Merge(zakupyClone);
                OnAdded();
                return true;
            }
            else
            {
                this.ShowDxErrorDialog(str);
                return false;
            }
        }
        private void btnCancel_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void gvMain_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
        {
            DataRow r = gvMain.GetDataRow(e.RowHandle);
            if (r != null)
            {
                r["WRK_WYD_PROD_WYDATEK"] = zakupyClone.WRK_WYDATKI[0].WRK_WYD_ID;
            }
        }

        private void lookUpEdit1_Settings_CreateNewRow(object sender, CreateNewRowEventArgs e)
        {
            DataRow row = sklepy.STP_SKLEPY.NewRow();
            row["STP_SKL_NAZWA"] = e.DisplayValue;
            sklepy.STP_SKLEPY.Rows.Add(row);
            e.NewRow.Assign(row);
        }

        private void rep_WRK_WYD_PROD_PRODUKT_Settings_CreateNewRow(object sender, CreateNewRowEventArgs e)
        {
            DataRow row = produkty.STP_PRODUKTY.NewRow();
            row["STP_PROD_NAZWA"] = e.DisplayValue;
            produkty.STP_PRODUKTY.Rows.Add(row);
            e.NewRow.Assign(row);
        }

        private void btnResetLayout_Click(object sender, EventArgs e)
        {
            layoutProvider1.RestoreDefaultLayout();
        }
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            layoutProvider1.SaveCurrentLayoutAsDefault();

            layoutProvider1.ApplySavedLayout();
        }
        protected override void OnClosed(EventArgs e)
        {
            base.OnClosed(e);
            layoutProvider1.SaveLayout();
        }

        private void btnZapiszNowe_Click(object sender, EventArgs e)
        {
            if (Save())
            {
                zakupyClone.Clear();
                zakupyClone.AcceptChanges();
                DataRow nr = zakupyClone.WRK_WYDATKI.NewRow();
                zakupyClone.WRK_WYDATKI.Rows.Add(nr);
                if (OptionCache.GetOptionBoolValue(Init.InitFormOptionNames.Work_Group.Wydatki_Group.NoweWydatki.CzyscDate))
                    dateEdit1.EditValue = null;
                lookUpEdit1.EditValue = null;
                gvMain.FocusedColumn = colWRK_WYD_PROD_PRODUKT;
                dateEdit1.Focus();
                dateEdit1.FocusPart(DatePart.Day);
            }
        }
        
    }
}
